/**
 * 两个不相关的进程之间通信，就需要命名管道来通信，即让两个进程看到同一份资源
 * 那么让两个进程打开同一个文件，一个从文件里写数据，另一个进程从该文件读数据
 * 就实现了两个进程的通信，那么这个文件就不是普通文件了，并且该文件映像大小一直
 * 为0，不管写多少数据都是不占空间的（磁盘的空间）,因为该文件不会将数据刷新到磁盘中
 * 的，因此在磁盘中不占空间大小，因此该文件是内存级的文件，叫管道文件，需要通过
 * 固定的指令或者底层调用系统接口的函数来创建：mkfifo/mkfifo()函数，是对系统调用
 * 作的封装。
 */

/**
 * 下面通过实例来演示命名管道的作用：
 * 一个服务端和一个客户端；
 * 一个进程作为服务端，另一个进程作为客户端，于是在服务端通过读取客户端写入到的管道中的
 * 数据，从而实现不同进程的通信。
 * 具体：
 * 创建server.cc作为服务端：在该进程中创建一个命名管道，然后以读的方式打开命名管道。
 * 创建client.cc作为客户端：在该进程中以写的方式打开服务端运行起来的创建的命名管道，
 * 然后客户端就可以写入数据，写到管道中让服务端读取，因此达到两个进程之间的通信。
 */

/**
 * 此进程作为公共的头文件书写区，两个不同的.cc调用此进程中的头文件
 */

#pragma once

#include <iostream>
// #include <cstdio>
// #include <cstring>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>

#define FILE_NAME "fifo"